
import { get, getNoToken } from '../api/service'
import { parse } from 'search-params'
import { ES3DTileset, ESImageryLayer, ESTerrainLayer } from "esobjs-xe2-plugin/dist-node/esobjs-xe2-plugin-main";
import { Message } from "earthsdk-ui"
import { XbsjEarthUi } from './xbsjEarthUi';
import { optionJson } from './options'
const search = window.location.search.substring(1)
const parseSearch = parse(search)
//scene
function initSceneId(xbsjEarthUi: XbsjEarthUi) {
    const id = parseSearch.scene
    let url = `${xbsjEarthUi.cesiumLabUrl}/tile/scene?id=${id}`
    if (xbsjEarthUi.cesiumLabToken) {
        url += `&labtoken=${xbsjEarthUi.cesiumLabToken}`
    }
    const token = localStorage.getItem('token') as string | undefined
    get(url, xbsjEarthUi.cesiumLabToken ? undefined : token).then((res: any) => {
        if (res.code === 1000) {
            const resJson = JSON.parse(res.data.content)
            if (!resJson) return
            xbsjEarthUi.json = resJson
            if (resJson.lastView) {
                setTimeout(() => {
                    xbsjEarthUi.activeViewer?.flyIn(resJson.lastView.position, resJson.lastView.rotation)
                }, 1000)
            }
            Message.success(`加载场景成功：${id}`)
        } else {
            initSceneFetch(xbsjEarthUi)
        }
    }).catch(error => {
        console.log(error);
        initSceneFetch(xbsjEarthUi)
    })
}
//esss
function initESSSsceneId(xbsjEarthUi: XbsjEarthUi) {
    const sceneid = parseSearch.ESSSsceneid as string
    const appid = parseSearch.appid as string
    const token = parseSearch.token as string
    if (!token) {
        Message.error(`无token值`)
    } else if (!sceneid) {
        Message.error(`无id值`)
    } else if (!appid) {
        Message.error(`无场景id`)
    } else {
        const origin = window.location.origin
        // const origin = 'http://localhost:9007';
        get(`${xbsjEarthUi.esssUrl}/setting/get`).then((res: any) => {
            if (res.status === 'ok') {
                get(`${xbsjEarthUi.esssUrl}/staticscene/get?id=${sceneid}`, token).then((res: any) => {
                    if (res.status === 'ok') {
                        Message.success(`加载场景成功：${appid}`)
                        const options = {
                            domid: 'viewersContainer',
                            uri: origin,
                            app: appid
                        }
                        const viewer = xbsjEarthUi.switchToUEViewer(options)
                        viewer.defaultCameraFlyIn()
                        const resJson = res.data.content
                        if (!resJson) {
                            initSceneFetch(xbsjEarthUi)
                        } else {
                            xbsjEarthUi.json = resJson
                        }
                    } else {
                        initSceneFetch(xbsjEarthUi)
                    }
                }).catch(error => {
                    console.log(error);
                    initSceneFetch(xbsjEarthUi)
                })
            }

        }).catch(err => {
            get(`${xbsjEarthUi.esssUrl}/staticscene/${sceneid}`, token).then((res: any) => {
                if (res.status === 'ok') {
                    Message.success(`加载场景成功：${appid}`)
                    const options = {
                        domid: 'viewersContainer',
                        uri: origin,
                        app: appid
                    }
                    const viewer = xbsjEarthUi.switchToUEViewer(options)
                    const resJson = res.data.content
                    if (!resJson) {
                        initSceneFetch(xbsjEarthUi)
                    } else {
                        xbsjEarthUi.json = resJson
                    }
                } else {
                    initSceneFetch(xbsjEarthUi)
                }
            }).catch(error => {
                console.log(error);
                initSceneFetch(xbsjEarthUi)
            })

        })


    }
}

// function initSceneDefault(xbsjEarthUi: XbsjEarthUi) {
//     get(`${xbsjEarthUi.cesiumLabUrl}/tile/scene/default`).then((res: any) => {
//         if (res) {
//             xbsjEarthUi.json = res
//             Message.success('加载场景成功')
//         } else {
//             initSceneFetch(xbsjEarthUi)
//         }
//     }).catch(error => {
//         console.log(error);
//         initSceneFetch(xbsjEarthUi)
//     })
// }
//json文件
const initJsin = (url: string) => {
    // const json = {
    //     "asset": {
    //         "version": "0.1.0",
    //         "createdTime": "2022-06-17T05:54:41.744Z",
    //         "modifiedTime": "2023-06-08T10:25:47.763Z",
    //         "name": "图层管理",
    //         "type": "ESObjectsManager"
    //     },
    //     "viewers": [],
    //     "sceneTree": {
    //         "root": {
    //             "children": [
    //                 {
    //                     "name": "地球影像",
    //                     "sceneObj": {
    //                         "id": "ae103185-08c7-4ed0-b6d4-15ad77bbbf66",
    //                         "type": "ESImageryLayer",
    //                         "url": "https://t2.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}&tk=6431667e2e6bf7693c902a386b3a8a4c",
    //                         "rectangle": [
    //                             -180,
    //                             -90,
    //                             180,
    //                             90
    //                         ],
    //                         "allowPicking": true,
    //                         "name": "地球影像",
    //                         "maximumLevel": 18
    //                     },
    //                     "children": []
    //                 },
    //                 {
    //                     "name": "VR工厂",
    //                     "sceneObj": {
    //                         "id": "d36f6fd5-119c-4c39-a3d8-6690fecede41",
    //                         "type": "ES3DTileset",
    //                         "url": "http://192.168.0.109:9003/model/tOlA6mpgv/tileset.json",
    //                         "tailorMinSize": [
    //                             -100,
    //                             -100,
    //                             -100
    //                         ],
    //                         "tailorMaxSize": [
    //                             100,
    //                             100,
    //                             100
    //                         ],
    //                         "flattenMinSize": [
    //                             -100,
    //                             -100,
    //                             -100
    //                         ],
    //                         "flattenMaxSize": [
    //                             100,
    //                             100,
    //                             100
    //                         ],
    //                         "offset": [
    //                             0,
    //                             0,
    //                             -55
    //                         ],
    //                         "rotation": [
    //                             0,
    //                             0.2,
    //                             0.2
    //                         ],
    //                         "name": "VR工厂",
    //                         "allowPicking": false
    //                     },
    //                     "children": []
    //                 },
    //                 {
    //                     "name": "图标点楼顶相机一",
    //                     "sceneObj": {
    //                         "id": "30ad2bf5-1796-496a-9c8e-6cce9d5188f4",
    //                         "type": "ESImageLabel",
    //                         "position": [
    //                             123.1577200940344,
    //                             41.73816167983329,
    //                             16
    //                         ],
    //                         "name": "图标点楼顶相机一",
    //                         "allowPicking": true,
    //                         "renderMode": 4,
    //                         "extras": {
    //                             "customerId": "ESImageLabeC0",
    //                             "customerType": "相机一"
    //                         }
    //                     },
    //                     "children": []
    //                 },
    //                 {
    //                     "name": "马路边摄像2",
    //                     "sceneObj": {
    //                         "id": "df2e3b8a-f075-4427-81a5-5e4c9966e43b",
    //                         "type": "ESImageLabel",
    //                         "position": [
    //                             123.15995869316806,
    //                             41.73801294401202,
    //                             6.37632638944885
    //                         ],
    //                         "name": "马路边摄像2",
    //                         "allowPicking": true,
    //                         "renderMode": 4,
    //                         "extras": {
    //                             "customerId": "ESImageLabeC1",
    //                             "customerType": "摄像2"
    //                         }
    //                     },
    //                     "children": []
    //                 },
    //                 {
    //                     "name": "图标点气象站",
    //                     "sceneObj": {
    //                         "id": "98730a86-aa65-49b7-89e2-aef0aa308628",
    //                         "type": "ESImageLabel",
    //                         "position": [
    //                             123.1582978094237,
    //                             41.73749841836511,
    //                             0.24437646331862428
    //                         ],
    //                         "name": "图标点气象站",
    //                         "allowPicking": true,
    //                         "renderMode": 4,
    //                         "url": "inner://Qixiang.png",
    //                         "extras": {
    //                             "customerId": "ESImageLabel1",
    //                             "customerType": "草坪气象站"
    //                         }
    //                     },
    //                     "children": []
    //                 },
    //                 {
    //                     "name": "顶楼气象站",
    //                     "sceneObj": {
    //                         "id": "e0f4f354-89fb-487e-a262-9ecd8ee3007b",
    //                         "type": "ESImageLabel",
    //                         "position": [
    //                             123.15962405498394,
    //                             41.73693330358202,
    //                             17
    //                         ],
    //                         "name": "顶楼气象站",
    //                         "allowPicking": true,
    //                         "renderMode": 4,
    //                         "url": "inner://Qixiang.png",
    //                         "extras": {
    //                             "customerId": "ESImageLabel2",
    //                             "customerType": "顶楼气象站"
    //                         }
    //                     },
    //                     "children": []
    //                 },
    //                 {
    //                     "name": "多边形选地",
    //                     "sceneObj": {
    //                         "id": "87030560-58b2-41ec-8f75-3be5563239f6",
    //                         "type": "ESGeoPolygon",
    //                         "name": "多边形",
    //                         "collision": false,
    //                         "allowPicking": true,
    //                         "filled": true,
    //                         "stroked": false,
    //                         "fillStyle": {
    //                             "color": [
    //                                 0.39,
    //                                 0.37,
    //                                 0.69,
    //                                 1
    //                             ],
    //                             "material": "",
    //                             "materialParams": {},
    //                             "ground": true
    //                         },
    //                         "points": [
    //                             [
    //                                 123.15800844171326,
    //                                 41.738440215037926,
    //                                 -0.6554892886006434
    //                             ],
    //                             [
    //                                 123.15853967681505,
    //                                 41.73868156175962,
    //                                 -0.5028515221977156
    //                             ],
    //                             [
    //                                 123.15875228811637,
    //                                 41.738464861792714,
    //                                 -0.5672011611982425
    //                             ],
    //                             [
    //                                 123.15861049094894,
    //                                 41.738368684122605,
    //                                 -0.37193901696362
    //                             ],
    //                             [
    //                                 123.158280493603,
    //                                 41.73822096888583,
    //                                 -0.77067919766742
    //                             ]
    //                         ],
    //                         "extras": {
    //                             "customerId": "customerId1",
    //                             "customerType": "polygon1"
    //                         }
    //                     },
    //                     "children": []
    //                 }
    //             ]
    //         }
    //     },
    //     "viewCollection": []
    // }
    return optionJson
}
function initSceneFetch(xbsjEarthUi: XbsjEarthUi) {
    new Promise(resolve => {
        setTimeout(function () {
            resolve({ url: 'https://t2.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}&tk=6431667e2e6bf7693c902a386b3a8a4c' })
        }, 1000)
    }).then((res: any) => {
        const json = initJsin(res.url)
        xbsjEarthUi.json = json
        Message.success('加载默认场景成功')
    })
    // getNoToken(`https://account.bjxbsj.cn/api/bjxbsj/online/default`).then((res: any) => {
    //     if (res && res.url) {
    //         const json = initJsin(res.url)
    //         xbsjEarthUi.json = json
    //         Message.success('加载默认场景成功')
    //     } else {
    //         const json = initJsin('https://webmap.giiiis.com/maps/vt?lyrs=s&x={x}&y={y}&z={z}')
    //         xbsjEarthUi.json = json
    //         Message.success('加载默认场景成功')
    //     }
    // }).catch((error) => {
    //     const json = initJsin('https://webmap.giiiis.com/maps/vt?lyrs=s&x={x}&y={y}&z={z}')
    //     xbsjEarthUi.json = json
    //     Message.success('加载默认场景成功')
    //     console.log(error);
    // })
    // getNoToken('./data/scene.json').then((res: any) => {
    //     xbsjEarthUi.json = res
    // })
}


//初始化
export function initSceneJson(xbsjEarthUi: XbsjEarthUi) {
    if (search) {
        if (parseSearch.scene) {//存在scene
            initSceneId(xbsjEarthUi)
        } else if (parseSearch.ESSSsceneid) {//存在scene
            initESSSsceneId(xbsjEarthUi)
        } else {
            initSceneFetch(xbsjEarthUi)
        }
    } else {
        initSceneFetch(xbsjEarthUi)
    }
}
function a(v: any) {
    if (v === undefined || v === null) return undefined
    return +v
}
export function initSceneWithType(xbsjEarthUi: XbsjEarthUi) {
    const sceneTree = xbsjEarthUi.getSceneTree()
    if (!sceneTree) return
    if (parseSearch.type) {
        if (parseSearch.type === 'images') {//存在images
            const rectangle = [+(parseSearch.west ?? -180), +(parseSearch.south ?? -90), +(parseSearch.east ?? 180), +(parseSearch.north ?? 90)]
            // console.log('images', parseSearch);
            const czmTilingScheme = parseSearch.proj === "4326" ? "GeographicTilingScheme" : "WebMercatorTilingScheme"
            const url = parseSearch.tiletrans === "tms" ? `${parseSearch.url}/tilemapresource.xml` : `${parseSearch.url}`
            const imagesJson =
            {
                "type": "ESImageryLayer",
                "url": url + `${xbsjEarthUi.cesiumLabToken ? '?labtoken=' + xbsjEarthUi.cesiumLabToken : ''}`,
                "rectangle": rectangle,
                // "czmTilingScheme": czmTilingScheme,
                "allowPicking": true,
                "name": `${parseSearch.name}`,
                "minimumLevel": a(parseSearch.minzoom),
                "maximumLevel": a(parseSearch.maxzoom),
                // "czmTileWidth": a(parseSearch.tilesize),
                // "czmTileHeight": a(parseSearch.tilesize),
                "zIndex": 1,
                "options": {
                    type: parseSearch.tiletrans === "tms" ? 'tms' : 'xyz',
                    tilingScheme: { type: czmTilingScheme }
                }
            }
            const treeItem = sceneTree.createSceneObjectTreeItemFromJson<ESImageryLayer>(imagesJson);
            if (!treeItem) return
            sceneTree.uiTree.clearAllSelectedItems()
            treeItem.uiTreeObject.selected = true
            const { sceneObject } = treeItem
            if (!(sceneObject instanceof ESImageryLayer)) return
            setTimeout(() => {
                sceneObject.flyTo()
            }, 1000);
        } else if (parseSearch.type === "terrains") {//存在terrains
            const rectangle = [+(parseSearch.west ?? -180), +(parseSearch.south ?? -90), +(parseSearch.east ?? 180), +(parseSearch.north ?? 90)]
            const terrainsJson = {
                "type": "ESTerrainLayer",
                "url": `${parseSearch.url}` + `${xbsjEarthUi.cesiumLabToken ? '?labtoken=' + xbsjEarthUi.cesiumLabToken : ''}`,
                "rectangle": rectangle,
                "allowPicking": true,
                "name": `${parseSearch.name}`,
            }
            const treeItem = sceneTree.createSceneObjectTreeItemFromJson<ESTerrainLayer>(terrainsJson);
            if (!treeItem) return
            sceneTree.uiTree.clearAllSelectedItems()
            treeItem.uiTreeObject.selected = true
            const { sceneObject } = treeItem
            if (!(sceneObject instanceof ESTerrainLayer)) return
            setTimeout(() => {
                sceneObject.flyTo()
            }, 1000);
        } else if (parseSearch.type === "models") {//存在models
            const tilesetJson = {
                "type": "ES3DTileset",
                "url": `${parseSearch.url}` + `${xbsjEarthUi.cesiumLabToken ? '?labtoken=' + xbsjEarthUi.cesiumLabToken : ''}`,
                "allowPicking": true,
                "name": `${parseSearch.name}`,
            }
            const treeItem = sceneTree.createSceneObjectTreeItemFromJson<ES3DTileset>(tilesetJson);
            if (!treeItem) return
            sceneTree.uiTree.clearAllSelectedItems()
            treeItem.uiTreeObject.selected = true
            const { sceneObject } = treeItem
            if (!(sceneObject instanceof ES3DTileset)) return
            setTimeout(() => {
                sceneObject.flyTo()
            }, 1000);
        }
    }
}

//初始化地址
export function initurl(xbsjEarthUi: XbsjEarthUi) {
    if (parseSearch.czmlabPath) {
        xbsjEarthUi.czmlabPath = parseSearch.czmlabPath as string
        console.log('czmlab-path:', xbsjEarthUi.czmlabPath);
    }
    if (parseSearch.cesiumLabUrl) {
        xbsjEarthUi.cesiumLabUrl = parseSearch.cesiumLabUrl as string
        console.log('cesiumLabUrl:', xbsjEarthUi.cesiumLabUrl);
    }
    if (parseSearch.cesiumLabToken) {
        xbsjEarthUi.cesiumLabToken = parseSearch.cesiumLabToken as string
        console.log('cesiumLabToken:', xbsjEarthUi.cesiumLabToken);
    }
}



